package com.test.zk;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        // 1.实例化一个ServerSocket的对象
        ServerSocket serverSocket = null;
        OutputStream output = null;// 用于向别人发消息
        InputStream input = null;// 用于读取别人发过来的消息
        try {
            serverSocket = new ServerSocket(8888);
            System.out.println("等待服务端的连接...");
            // 2.监听，获取连接到的客户端 注意：在未连接成功之前，将一直处于阻塞状态
            Socket socket = serverSocket.accept();
            System.out.println("连接成功");
            // 3.获取网络到内存的一个输入流
            input = socket.getInputStream();//客户端说了什么
            // 4.读取数据,这个数据是Client发过来的
            byte[] arr = new byte[1024];
            int len = input.read(arr);
            String message = new String(arr, 0, len);
            // 5.组织信息
            String ipString = socket.getInetAddress().getHostAddress();
            int port = socket.getPort();
            System.out.println(ipString + ":" + port + "说：" + message);
            // 6.服务端给客户端回复消息
            output = socket.getOutputStream();//对客户端说的话
            output.write("你也好，好久不见了".getBytes());
            output.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                output.close();
                input.close();
                serverSocket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
